--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Commit 821b0334b0a56916977223d4bf18ac248669e54c
Parents : 90899c7
Author : Mark Qvist <bc7291552be7a58f361522990465165c>
Signature : T66BB85Valid, signed by author
Date : 2026-07-12T18:33:39+02:00
Cleanup
Changes
Diff
diff --git a/sbapp/ui/objectdetails.py b/sbapp/ui/objectdetails.py
index 0af7ccc0..4ee2056d 100644
--- a/sbapp/ui/objectdetails.py
+++ b/sbapp/ui/objectdetails.py
@@ -127,7 +127,6 @@ class ObjectDetails():
else:
iface = if_map[discovery_hash]
ts = iface["last_heard"]
- RNS.log(f"Found interface:\n{iface}")
t = Telemeter()
if "latitude" in iface and "longitude" in iface and iface["latitude"] and iface["longitude"]:
t.sensors["time"].data = {"utc":int(ts)}
@@ -384,25 +383,24 @@ class RVDetails(MDRecycleView):
if_type = if_data["type"]
sc_str = f", {if_data['status'] if if_data['status'] != 'unknown' else 'availability unknown'}" if "status" in if_data and if_data["status"] else ""
tid_str = f", ID [b]<{if_data['transport_id']}>[/b]" if "transport_id" in if_data else ""
+ tcp_reachable = "reachable_on" in if_data and "port" in if_data
+ i2p_reachable = if_type == "I2PInterface" and "reachable_on" in if_data
+
# if "discovery_hash" in if_data: self.entries.append({"icon": "key-link", "text": f"[b]{RNS.prettyhexrep(if_data['discovery_hash'])}[/b]"})
- self.entries.append({"icon": if_appearance[0], "text": f"Discovered [b]{if_type}[/b]{sc_str}"})
- if "transport" in if_data: self.entries.append({"icon": "transit-connection-variant", "text": f"Transport [b]{'enabled' if if_data['transport'] else 'disabled'}[/b]{tid_str if if_data['transport'] else ''}"})
# if "transport_id" in if_data: self.entries.append({"icon": "key-link", "text": f"Transport ID [b]<{if_data['transport_id']}>[/b]"})
- if "network_id" in if_data: self.entries.append({"icon": "key-link", "text": f"Network ID [b]<{if_data['network_id']}>[/b]"})
- if "discovered" in if_data: self.entries.append({"icon": "clock-check-outline", "text": f"First heard [b]{RNS.prettytime(time.time()-if_data['discovered'], compact=True)}[/b] ago"})
- if "reachable_on" in if_data and "port" in if_data: self.entries.append({"icon": "connection", "text": f"Reachable on [b]{if_data['reachable_on']}:{if_data['port']}[/b]"})
- if if_type == "I2PInterface" and "reachable_on" in if_data: self.entries.append({"icon": "connection", "text": f"I2P B32 [b]{if_data['reachable_on']}[/b]"})
- if "frequency" in if_data: self.entries.append({"icon": "sine-wave", "text": f"Frequency [b]{RNS.prettyfrequency(if_data['frequency'], d=3)}[/b]"})
- if "bandwidth" in if_data: self.entries.append({"icon": "arrow-expand-horizontal", "text": f"Bandwidth [b]{RNS.prettyfrequency(if_data['bandwidth'], d=3)}[/b]"})
- if "sf" in if_data: self.entries.append({"icon": "poll", "text": f"[b]Spreading Factor {if_data['sf']}[/b]"})
- if "cr" in if_data: self.entries.append({"icon": "barcode", "text": f"[b]Coding Rate {if_data['cr']}[/b]"})
-
- # if "" in if_data: self.entries.append({"icon": "", "text": f"[b]{}[/b]"})
- # if "" in if_data: self.entries.append({"icon": "", "text": f"[b]{}[/b]"})
-
- if "hops" in if_data: self.entries.append({"icon": "atom-variant", "text": f"Network distance is [b]{if_data['hops']} hop{'' if if_data['hops'] == 1 else 's'}[/b]", "on_release": pass_job})
- if "value" in if_data: self.entries.append({"icon": "postage-stamp", "text": f"Stamp value [b]{if_data['value']}[/b]"})
- if "heard_count" in if_data: self.entries.append({"icon": "counter", "text": f"[b]Heard {if_data['heard_count']}[/b] time{'' if if_data['heard_count'] == 1 else 's'}"})
+ self.entries.append({"icon": if_appearance[0], "text": f"Discovered [b]{if_type}[/b]{sc_str}", "on_release": pass_job})
+ if "transport" in if_data: self.entries.append({"icon": "transit-connection-variant", "text": f"Transport [b]{'enabled' if if_data['transport'] else 'disabled'}[/b]{tid_str if if_data['transport'] else ''}", "on_release": pass_job})
+ if "network_id" in if_data: self.entries.append({"icon": "key-link", "text": f"Network ID [b]<{if_data['network_id']}>[/b]", "on_release": pass_job})
+ if "discovered" in if_data: self.entries.append({"icon": "clock-check-outline", "text": f"First heard [b]{RNS.prettytime(time.time()-if_data['discovered'], compact=True)}[/b] ago", "on_release": pass_job})
+ if tcp_reachable: self.entries.append({"icon": "connection", "text": f"Reachable on [b]{if_data['reachable_on']}:{if_data['port']}[/b]", "on_release": pass_job})
+ if i2p_reachable: self.entries.append({"icon": "connection", "text": f"I2P B32 [b]{if_data['reachable_on']}[/b]", "on_release": pass_job})
+ if "frequency" in if_data: self.entries.append({"icon": "sine-wave", "text": f"Frequency [b]{RNS.prettyfrequency(if_data['frequency'], d=3)}[/b]", "on_release": pass_job})
+ if "bandwidth" in if_data: self.entries.append({"icon": "arrow-expand-horizontal", "text": f"Bandwidth [b]{RNS.prettyfrequency(if_data['bandwidth'], d=3)}[/b]", "on_release": pass_job})
+ if "sf" in if_data: self.entries.append({"icon": "poll", "text": f"[b]Spreading Factor {if_data['sf']}[/b]", "on_release": pass_job})
+ if "cr" in if_data: self.entries.append({"icon": "barcode", "text": f"[b]Coding Rate {if_data['cr']}[/b]", "on_release": pass_job})
+ if "hops" in if_data: self.entries.append({"icon": "atom-variant", "text": f"Network distance is [b]{if_data['hops']} hop{'' if if_data['hops'] == 1 else 's'}[/b]", "on_release": pass_job})
+ if "value" in if_data: self.entries.append({"icon": "postage-stamp", "text": f"Stamp value [b]{if_data['value']}[/b]", "on_release": pass_job})
+ if "heard_count" in if_data: self.entries.append({"icon": "counter", "text": f"[b]Heard {if_data['heard_count']}[/b] time{'' if if_data['heard_count'] == 1 else 's'}", "on_release": pass_job})
rendered_telemetry.sort(key=lambda s: sort[s["name"]] if s["name"] in sort else 1000)
for s in rendered_telemetry:
@@ -813,8 +811,7 @@ class RVDetails(MDRecycleView):
def select(e=None):
geo_uri = f"geo:{lat},{lon}"
- def lj():
- webbrowser.open(geo_uri)
+ def lj(): webbrowser.open(geo_uri)
threading.Thread(target=lj, daemon=True).start()
release_function = select
@@ -844,15 +841,11 @@ class RVDetails(MDRecycleView):
data = None
if formatted_values != None:
- if release_function:
- data = {"icon": s["icon"], "text": f"{formatted_values}", "on_release": release_function}
- else:
- data = {"icon": s["icon"], "text": f"{formatted_values}", "on_release": pass_job}
+ if release_function: data = {"icon": s["icon"], "text": f"{formatted_values}", "on_release": release_function}
+ else: data = {"icon": s["icon"], "text": f"{formatted_values}", "on_release": pass_job}
- if data != None:
- self.entries.append(data)
- for extra in extra_entries:
- self.entries.append(extra)
+ if data != None: self.entries.append(data)
+ for extra in extra_entries: self.entries.append(extra)
except Exception as e:
RNS.log("An error ocurred while displaying telemetry for object", RNS.LOG_ERROR)
@@ -860,9 +853,10 @@ class RVDetails(MDRecycleView):
RNS.trace_exception(e)
try:
- ratchet_id = RNS.Identity.current_ratchet_id(self.delegate.object_hash)
- if ratchet_id:
- self.entries.append({"icon": "lock-check-outline", "text": f"Using ratchet [b]{RNS.prettyhexrep(ratchet_id)}[/b]", "on_release": pass_job})
+ if not self.delegate.viewing_interface:
+ ratchet_id = RNS.Identity.current_ratchet_id(self.delegate.object_hash)
+ if ratchet_id:
+ self.entries.append({"icon": "lock-check-outline", "text": f"Using ratchet [b]{RNS.prettyhexrep(ratchet_id)}[/b]", "on_release": pass_job})
except Exception as e: RNS.trace_exception(e)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────